NOTE: This Technical Q&A has been retired. Please see the Technical Q&As page for current documentation.

Technical Q&A TB40
Navigation Services and memFullErr

Q When I make one of the Navigation Services browsing calls, like NavGetFolder, nothing happens on the screen and I get -108 (memFullErr) as a return value, even though MacsBug tells me there are megabytes of free memory in the application, system, and process manager heaps. Why?

A There are two known potential reasons for this phenomemon:
  • The classic 68K glue (a.k.a. Navigation.o) for Navigation Services 1.0 makes Code Fragment Manager and Mixed Mode Manager calls to invoke the appropriate routine in the Navigation Services shared library. The glue starts out with the assumption that it will fail due to memFullErr. If, however, it fails for one of several other reasons, it doesn't update its assumption and reports the failure as if it exhausted available memory. One problem which is masked this way is the absence of the shared library. By calling NavServicesAvailable before attempting to use the rest of Nav, as documented, you will know that Nav is not installed and avoid the confusing memFullErr.

  • Navigation Services is able to make a reasonable estimate of the minimum amount of memory it will need to display a browsing dialog. If this amount of memory is not available, the call returns memFullErr without any on-screen evidence of the failure. If your application failed to call MaxApplZone before calling Nav, Nav will be fooled into believing your heap is tiny or nearly full. MaxApplZone is an important part of a balanced breakfast. Call it.

[Jul 06 1998]


Developer Documentation | Technical Notes | Development Kits | Sample Code